import Vue from "vue";
import VueJsonp from "vue-jsonp";

Vue.use(VueJsonp);

//统一管理请求地址
const URLS={
    mutiget:"https://mce.mogucdn.com/jsonp/multiget/3",
    search:"https://list.mogujie.com/search",
    getDataByMaitKey:"https://mce.mogucdn.com/jsonp/get/3",
    searchKey:"https://list.mogujie.com/module/mget",
    getComments:"https://rate.mogujie.com/h5/rate/jsonp/x6.rate.ratelist/v1"
}

//统一管理错误处理
const errorFun=function(error){
    showErrorTip(error);//此时调用了定义在window上的showErrorTip方法
}
//统一管理请求方法
//1、首页的实惠直达，热门分类请求
const loadMutigetData=function(params={}){
    return Vue.jsonp(URLS.mutiget,params)
        .then(({success,data})=>{
            if(success){
                return data;
            }else{
                return Promise.reject("请求错误!");
            }
        })
        // .catch(errorFun);//这里等同于调用了errorFun("请求错误!");也可以在调用的页面实例中去写
}
//2、首页的猜你喜欢请求
const loadSearchData=function(params={}){
    return Vue.jsonp(URLS.search,params)
        .then(({result,success})=>{
            if(success){
                return result;
            }else{
                return Promise.reject("请求错误!");
            }
        })
}
//3、分类页面的右上半侧的请求
const loadTypeListsData=function(params={}){
    return Vue.jsonp(URLS.getDataByMaitKey,params)
        .then(({data,success})=>{
            if(success){
                return data;
            }else{
                return Promise.reject("请求错误!");
            }
        })
}
//4、查询关键字的请求
const loadSearchKey=function(params={}){
    return Vue.jsonp(URLS.searchKey,params)
        .then(({success,data})=>{
            if(success){
                return data;
            }else{
                return Promise.reject("请求错误!");
            }
        })
}
//5、查询各个物品的评论接口的请求
const loadGoodComment=function(params={}){
    return Vue.jsonp(URLS.getComments,params)
        .then(({data,success})=>{
            if(success){
                return data;
            }else{
                return Promise.reject("请求错误!");
            }
        })
}

const Funs={//将所有请求方法先定义在一个固定对象中，方便使用
    loadMutigetData,loadSearchData,loadTypeListsData,loadSearchKey,loadGoodComment
}
export default{
    install(Vue){//install的方法对象导出给vue实例使用
        Vue.prototype.$api=Funs;
        Vue.prototype.$error=errorFun;//实例上的$error方法等同于单独在全局插件定义的window.showErrorTip方法和实例原型上的$showErrorTip方法
    },
    //以下的对象及方法导出给vuex管理使用
    ...Funs,
    errorFun
}